/**
 * 租户套餐
 * @author luguoxiang
 * @date 2025-05-05
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
import { BaseEntity, IConfigSchema } from '@/soar';
import { basePath } from './api';
import { MenuComponent } from '@/types/interface';

export interface TenantComboMeal extends BaseEntity {
  /** 创建人(0表示空) */
  createBy?: any;
  /** 创建时间 */
  createTime?: any;
  /** 时长单位(0时，1天，2月，3年) */
  durationUnit?: any;
  /** 时长 */
  durationValue?: any;
  /**  */
  id?: any;
  /** 最大在线用户数（0不限制） */
  maxOnline?: any;
  /** 最大用户数（0不限制） */
  maxUser?: any;
  /** 套餐名称 */
  name?: any;
  /** 价格 */
  price?: any;
  /** 更新人(0表示空) */
  updateBy?: any;
  /** 更新时间 */
  updateTime?: any;
}

const fieldList: IConfigSchema<TenantComboMeal>[] = [
  {
    field: 'name',
    label: '套餐名称',
    dataType: 'string',
  },
  {
    field: 'price',
    label: '价格',
    dataType: 'number',
  },
  {
    field: 'durationUnit',
    label: '时长单位',
    dataType: 'dict',
    params: 'DurationUnitEnum',
    form: false,
  },
  {
    field: 'durationValue',
    label: '时长',
    dataType: 'number',
    form: {
      slots: 'durationValue'
    }
  },
  {
    field: 'maxUser',
    label: '最大用户数',
    dataType: 'number',
    table: {
      cell(h, { row }) {
        return row.maxUser || '不限';
      },
      width: 100,
    },
    detail: {
      formatter(_d, v) {
        return v || '不限';
      },
    },
    form: {
      slots: 'maxUser',
    },
  },
  {
    field: 'maxOnline',
    label: '最大在线数',
    dataType: 'number',
    table: {
      cell(h, { row }) {
        return row.maxOnline || '不限';
      },
      width: 100,
    },
    detail: {
      formatter(_d, v) {
        return v || '不限';
      },
    },
    form: {
      slots: 'maxOnline',
    },
  },
];

export default fieldList;

/**
 * 组件配置（用于生成菜单数据）
 */
export const COMPONENTS: MenuComponent[] = [
  {
    title: '租户套餐',
    component: () => import('./List.vue'),
    sort: 40,
    keepalive: true,
    icon: 'bookmark-double-filled',
    permits: [`GET${basePath}/query`],
    elements: [
      { title: '新增', code: 'create', permits: [`POST${basePath}/create`] },
      { title: '更新', code: 'update', permits: [`POST${basePath}/update`, `GET${basePath}/detail`] },
      { title: '删除', code: 'remove', permits: [`POST${basePath}/remove`] },
      { title: '详情', code: 'detail', permits: [`GET${basePath}/detail`] },
      { title: '导入', code: 'import', permits: [`POST${basePath}/import`] },
      { title: '导出', code: 'export', permits: [`GET${basePath}/export`] },
    ],
  },
];
